package com.itheima.exception;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

import java.util.HashMap;
import java.util.Map;

/**
 * 全局异常处理类：
 */
@ControllerAdvice  // 声明此类为异常处理类
public class GlobalExceptionAdvice {

    /**
     * 前后端规定：
     *      ResponseEntity：可以封装状态值 和 响应的数据
     *      前后端 探花定死了一个返回的key message表示提示信息
     */


    /**
     * Business：业务异常（可预期异常）
     * @param e
     * @return
     */
    @ExceptionHandler(BusinessException.class)
    public ResponseEntity businessException(Exception e) {

        e.printStackTrace();  // 输出到控制台
        Map map = new HashMap<>();
        map.put("message", e.getMessage()); // 抛出异常信息
        return ResponseEntity.status(500).body(map);  // body：响应体
    }


    /**
     * 其他异常（不可预期异常）
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public ResponseEntity otherException(Exception e) {

        e.printStackTrace();  // 输出到控制台
        Map map = new HashMap<>();
        map.put("message", "对不起,网络繁忙~请稍后再试"); // 抛出异常信息
        return ResponseEntity.status(500).body(map);  // body：响应体
    }
}
